#!/usr/bin/python3
# -*- coding: utf-8 -*-

import allure
from playwright.sync_api import Page

from models.base_page import BasePage


class LoadbalancerPoliciePage(BasePage):
    def __init__(self, page: Page):
        super().__init__(page)
        self.route = "loadbalancer_policies"

    def check_lb_policie_page_user_guide_element_to_be_visible(self):
        """检查使用指南元素是否可见"""
        with allure.step("检查LoadbalancerPoliciePage:使用指南元素是否可见"):
            self.expect.to_be_visible(self.page.locator(".intro"))  # 使用指南栏目
            self.expect.to_be_visible(self.page.get_by_text("使用指南"))
            self.expect.to_be_visible(self.page.get_by_text("收起"))
            self.expect.to_be_visible(self.page.locator(".svg-icon > use"))
            self.expect.to_contain_text(self.page.locator("#console"),
                                        "负载均衡的后端服务器可根据业务需求设置为对等或不对等两种模式。"
                                        "如果后端不对等，可以通过自定义转发策略来进行更高级转发控制。"
                                        "目前，可支持“按域名转发”和“按 URL 转发”两种规则，"
                                        "每条转发策略可配置多条规则，并可以自定义规则之间的匹配方式。")

    def check_lb_policie_table_element_to_be_visible(self):
        """检查工具栏及table是否可见"""
        with allure.step("检查LoadbalancerPoliciePage:工具栏及table是否可见"):
            self.expect.to_be_visible(self.page.locator(".table-toolbar"))
            self.expect.to_be_visible(self.page.get_by_role("link", name="G", exact=True))
            self.expect.to_be_visible(self.page.locator("a").filter(has_text="创建"))
            self.expect.to_be_visible(self.page.locator("a").filter(has_text="复制"))
            self.expect.to_be_visible(self.page.locator("input[type=\"text\"]"))
            self.expect.to_be_visible(self.page.get_by_placeholder(" "))
            self.expect.to_be_visible(self.page.get_by_role("combobox"))